---
title: "04-EasyTier+Cloudflare Tunnel 优雅20r成本个人自托管方案"
created: 2026-01-09
tags:
- 博客
---
# EasyTier+Cloudflare Tunnel 优雅20r成本个人自托管方案
![[NAT_VPS_零公网_IP_建站方案全指南-6924b644.png]]
## 背景与缘起
起因是在 Trilium 交流群中分享自己的作品,意外结识了一位朋友,对方也是个热衷于捣鼓电脑的人。更令人惊奇的是,他竟然是艺术生,而且年龄还比我小。在服务器的很多领域,我确实不如他。于是我们交流了蛮多这些关于网络的有趣知识,并互相交换了笔记。打算抽空重温一下他曾经踩过的坑。
在他的推荐下,我也买到了比较便宜的服务器:
![[7-Blog/网络与自托管/assets/image-2c010cbd.png]]
### 遇到的痛点:便宜是有代价的
入手服务器后,我发现了这台“廉价”服务器([[01-NAT VPS]])的致命短板:
1. **没有独立公网 IP**:
- 服务器 IP 信息:`103.xx.xx.85:6xx55`。
- **真相**:这就像几百人合租一套房,大家共用一个大门(公网 IP `103.xx.xx.85`)。
2. **端口极度受限**:
- 我没有 `80` (HTTP)、`443` (HTTPS) 甚至标准的 `22` (SSH) 端口的使用权。
- 服务商只分给了我一个偏僻的 `6xx55` 端口(映射到内网 22 用于管理)。
3. **困局**:
- 想建站?没 80 端口,无法直接访问。
- 想远程访问家里 NAS?需要复杂的转发。
- **朋友的原始方案**:用 EasyTier 组网,但需要买一台**更昂贵的独立 IP 服务器**做出口 —— 这违背了我“穷折腾”的初衷,让这台便宜 VPS 变得鸡肋。
### 破局思路:Cloudflare Tunnel + EasyTier
为了不买昂贵的服务器,我找到了一套**“白嫖”公网入口**的终极方案。
**核心逻辑:** 不再寻求“购买”公网 IP,而是利用 [[03-Cloudflare Tunnel]]的反向隧道能力,配合 [[02-EasyTier]]的内网穿透能力,让流量“主动”找上门。
- **Cloudflare**:提供免费的全球公网入口(解决无 IP、无端口问题),作为公网大门,通过 Tunnel 将流量安全转发进 VPS,再由 VPS 转发给 Windows。
- **VPS**:作为 24 小时在线的稳定中转站 & EasyTier 组网核心(Signal Server),通过 NAT 端口映射暴露,供 Windows 直连。
- **家庭设备**:通过 EasyTier 接入 VPS 的虚拟局域网,实际运行业务服务。
(只能说 非常非常非常强大 本地windows跑的项目可以安全的用一个优雅的自定义域名被公网访问 且具有极度方便的可拓展性 而成本只需要9.9一个月的服务器 + 12r一年的域名)
### 核心架构图解 (重点知识补全)
这套方案的精髓在于**“全链路主动出站,无视入站防火墙”**。
![[7-Blog/网络与自托管/assets/12c4722c40ceb5ea07785afa5fba5755-12c4722c.png]]
#### 角色分工详解
| **角色** | **组件/环境** | **职责描述** | **网络特征** |
| --- | --- | --- | --- |
| **用户** | 浏览器 | 发起访问请求 (如 `https://nas.example.com`) | 只需能上网 |
| **Cloudflare** | Edge Network | 1. 提供 DNS 解析与 HTTPS 证书 2. 识别 Tunnel 流量并清洗攻击 (DDoS) 3. 将请求塞入隧道 | 公网入口 |
| **VPS** | **cloudflared** **EasyTier** | **作为中转跳板**。 1. 运行 Tunnel 接收来自 Cloudflare 的流量。 2. **组网核心**:作为 EasyTier 的公共节点(Planet),保证家庭设备即使 IP 变动也能互联。 | **NAT/端口受限** 只需能出网 |
| **家庭电脑** | **EasyTier** Nginx/宝塔 业务服务 | **作为业务落地**。 运行实际的 Web 服务、NAS、Docker 等。 通过 EasyTier 虚拟 IP 接收来自 VPS 的请求。 | **无公网 IP** 防火墙全闭 |
![[7-Blog/网络与自托管/assets/image-f82a8698.png]]
## **第一步:VPS 环境准备与端口映射**
### 查看vps配置:
```
cat /etc/os-release
uname -m
free -h
ip addr
```
![[7-Blog/网络与自托管/assets/image-0aeb981b.png]]
Ubuntu 22.04 + 4GB 内存,完全够用。
### 设置 NAT 端口转发
由于 VPS 只有内网 IP,我们需要在服务商后台“打个洞”供 EasyTier 通信。
- 登录服务商后台 ([host.idcfx.net](https://host.idcfx.net/))。
- 找到买的那台nat vps
![[7-Blog/网络与自托管/assets/image-417e3571.png]]
- 进入 **NAT 转发** / **端口映射**。
- **添加规则**:
- 名称:随便填,比如 `easytier`
- 协议:**TCP+UDP**
- 内部端口:**11010** (EasyTier 默认端口)
- 外部端口:记下系统分配的端口 (例如 **22020**)
- **记录**:VPS 公网 IP (103.xx.xx.85) 和 外部端口 (22020)。
![[image-fbbb8a24.png]]
## **第二步:部署 EasyTier (组建虚拟内网)**
### **1. VPS 端 (作为核心服务器)**
#### (1)下载 EasyTier
```
cd /root
wget https://github.com/EasyTier/EasyTier/releases/download/v2.2.3/easytier-linux-x86_64-v2.2.3.zip
```
若失败 使用代理:
```
wget https://ghproxy.net/https://github.com/EasyTier/EasyTier/releases/download/v2.2.3/easytier-linux-x86_64-v2.2.3.zip
```
![[7-Blog/网络与自托管/assets/image-51cab3ba.png]]
#### (2)解压安装
```
apt update && apt install -y unzip
unzip easytier-linux-x86_64-v2.2.3.zip
mv easytier-linux-x86_64 /opt/easytier
chmod +x /opt/easytier/*
```
![[7-Blog/网络与自托管/assets/image-196bd545.png]]
#### (3) 验证安装
```
/opt/easytier/easytier-core --version
```
![[7-Blog/网络与自托管/assets/image-25d9521d.png]]
#### (4)配置 Systemd 服务
下载并安装 EasyTier 后,配置 Systemd 服务使其开机自启。
**复制下面的命令(整段复制),粘贴到 VPS 终端执行:**
> *⚠️ **注意**:下面的命令中* `root123456` *是组网密码*
```
cat > /etc/systemd/system/easytier.service < (或者任意地方都可)
- 买个top后缀的大概10来块钱一年,买完就行,不用着急解析
- 修改 DNS 服务器 (NameServers) 指向 Cloudflare 提供的地址。**(Cloudflare 添加域名)**
- 打开 (需要先注册 用谷歌即可)
- 点击「**添加站点**」(Add a site)
- 输入: (你自己买的域名)
- 选择 **Free(免费)** 计划
![[image-a4c5b4dd.png]]
- 点继续,Cloudflare 会给你 **两个 NS 服务器**:
![[image-20b93d0f.png]]
- **去 Namesilo 修改 DNS**
- 打开
- 点击 你的域名 进入管理
![[image-193a2c1a.png]]
- 找到 「**NameServers**」 或 「**DNS 服务器**」
- 点击 **Change**(修改)
- 删除原来的 NS,填入 Cloudflare 给的那两个
- ![[image-2ec6a530.png]]
- 保存
### 2. VPS连接 Cloudflare
#### (1)下载并安装 cloudflared
这是连接 Cloudflare 的核心组件。由于是NAT VPS,同样使用国内加速链接下载。
**依次执行:**
```
# 1. 下载安装包 (使用加速镜像)
wget -O cloudflared-linux-amd64.deb https://gh-proxy.com/https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
# 2. 安装
dpkg -i cloudflared-linux-amd64.deb
# 3. 验证安装
cloudflared --version
```
![[7-Blog/网络与自托管/assets/image-b924bf72.png]]
#### **(2)获取授权令牌,建立隧道**
**这一步需要回到电脑浏览器操作:**
1. 进入 [**Cloudflare Zero Trust 面板**](https://one.dash.cloudflare.com/)。
2. 左侧菜单找到 **Networks** -> **Tunnels**。
3. 点击蓝色按钮 **Create a tunnel**。
![[7-Blog/网络与自托管/assets/image-7fdfd39b.png]]
4. **Select connector** 选 `Cloudflared`,点 Next。
![[7-Blog/网络与自托管/assets/image-1347bc97.png]]
5. **Name your tunnel** 随便填(比如 `vps-bridge`),点 Save。
![[7-Blog/网络与自托管/assets/image-86bac0f3.png]]
6. **关键一步**:
在 "Install and run a connector" 页面,确保选中 **Debian** (64-bit)。
Ubuntu 是基于 Debian 开发的,所以在 Linux 世界里,Ubuntu 和 Debian 是“一家人”。
![[7-Blog/网络与自托管/assets/image-7c5ece57.png]]
下面有一个黑色的代码框,里面有一行以 `sudo cloudflared service install ...` 开头的长命令。这是连接 Cloudflare 的“钥匙”
![[image-7dd664ae.png]]
7. **执行:**
```
systemctl status cloudflared
```
![[image-42cd5668.png]]
从日志里这句 `ERR Failed to dial a quic connection` 看出,你的 VPS 网络环境对 **QUIC协议 (UDP)** 支持不好,导致连接超时。
**解决方法很简单:强制让它走 HTTP2 协议 (TCP)。**
依次执行下面的命令来修复:
停止当前卡住的服务:
```
systemctl stop cloudflared
```
修改配置文件(强制使用 http2)
```
sed -i 's/tunnel run/tunnel run --protocol http2/g' /etc/systemd/system/cloudflared.service
```
重载配置并重启
```
systemctl daemon-reload
systemctl start cloudflared
```
再次查看状态
```
systemctl status cloudflared
```
![[7-Blog/网络与自托管/assets/image-4515e99e.png]]
### **3. 配置公网访问规则 (Public Hostname)**
组网成功后,VPS 和 Windows 互通。现在需要 Cloudflare 把公网请求转发给内网的 Windows。
1. 登录 Cloudflare Dash -> Zero Trust -> Networks -> Tunnels。
![[image-d8b8e4bb.png]]
搜索Tunnels:
![[7-Blog/网络与自托管/assets/image-6c66f358.png]]
![[image-5d73dc3b.png]]
2. 配置 Tunnel (`vps-bridge`) -> **Public Hostname**。
![[image-b9cfd4a2.png]]
![[image-db94004d.png]]
3. **添加规则 (Add a public hostname)**:
- **Subdomain**: `note` (笔记访问前缀)
- **Domain**: (我们一开始注册 并让Cloudeflare解析的域名)
- **Path**: 空
- **Service Type**: **HTTP**
- **URL**: `10.10.10.2:37840`
- *解析:Cloudflare 收到请求 -> 发给 VPS -> VPS 通过虚拟局域网 -> 找到 Windows (10.10.10.2) 的 37840 端口。*
![[image-d2390049.png]]
4. 保存。
## 最终效果:
手机可以正常访问Windows 上的 Trilium 笔记,且全程加密,无需公网 IP。
![[image-6a98cece.png]]
## 思考:
### 1、再看看做了什么?
利用 NAT VPS 作为中转跳板,结合 Cloudflare 的边缘防护,实现零公网 IP 环境下的安全服务发布。
- **VPS (核心枢纽):**
- **角色:** EasyTier 组网核心 + 流量中转站。
- **职责:** 运行 `cloudflared` 接收公网流量,同时运行 EasyTier 将流量转发至内网虚拟 IP。
- **Windows (业务节点):**
- **角色:** 纯粹的业务提供者(Payload)。
- **职责:** 运行具体服务(如 Trilium、Alist),通过 EasyTier 接入虚拟网,**无需暴露任何公网端口**。
- **Cloudflare (安全网关):**
- **角色:** 门卫与保安。
- **职责:** 处理 DNS 解析、自动 HTTPS 证书、WAF 防火墙过滤、Access 鉴权。
![[7-Blog/网络与自托管/assets/image-c897c216.png]]
### 2、数据流向
从用户访问到服务响应的完整路径:
> **用户** (浏览器) `⬇` (公网 HTTPS) **Cloudflare 边缘节点** (CDN/WAF 清洗) `⬇` (加密隧道) **VPS** (由 cloudflared 接收) `⬇` (转发至内网 IP) **EasyTier 虚拟网卡** `⬇`(P2P 或中转 VPN 流量) **Windows** (EasyTier 接收 -> 本地端口) `⬇` **具体服务** (如 Trilium)
![[7-Blog/网络与自托管/assets/image-f9805493.png]]
### 3、安全性评估 (Security Analysis)
**结论:** 远高于传统直接穿透(FRP/端口映射),属于“企业级”零信任安全模型。
- **🛡️ 核心防御机制:**
1. **隐身术:** 攻击者无法通过扫描 IP 找到你的真实位置,因为所有入口都在 Cloudflare。
2. **闭门谢客:** Windows 和 VPS 不需要开放 80/443 等高危入站端口。
3. **Access 绝杀:** 可在 CF 后台设置“仅特定邮箱验证码”通过。黑客连 Trilium 的登录框都看不到。
![[7-Blog/网络与自托管/assets/image-272cb00c.png]]
### 4、扩展性指南 (SOP)
**场景:** 在 Windows 上新增一个服务(如 Alist,端口 5244)。
**原则:** 架构搭建完毕后,新增服务**无需**改动网络层(VPS/路由器)。
1. **Windows 端操作:**
- 启动新服务(Alist)。
- **防火墙设置:** 在 Windows 高级防火墙中,添加入站规则允许 `5244` 端口(仅限内网/本机)。
2. **Cloudflare 端操作:**
- 进入 `Zero Trust` -> `Tunnels` -> `Configure`。
- [here](https://one.dash.cloudflare.com/f9f6bb732c788123a0654e0b8f23873f/networks/connectors/cloudflare-tunnels/cfd_tunnel/b33008db-7d5b-46d9-aa31-53ebbce5af0a/edit?tab=publicHostname)
- **Public Hostname** 页签 -> `Add Public Hostname`。
- 设置域名(如 `pan.yourdomain.com`)。
- 设置 Service:`Type: HTTP`,`URL: [Windows的EasyTier IP]:5244`。
![[image-eb2be62c.png]]
3. **完成:**
- 直接访问域名即可。
![[image-c60ae5a1.png]]
![[7-Blog/网络与自托管/assets/image-a99ec660.png]]
### 5、 瓶颈与局限 (Limitations)
- **带宽瓶颈:** 取决于 NAT VPS 的上行带宽。若 VPS 只有 10Mbps,公网访问速度上限即为 1.2MB/s 左右。
- **延迟叠加:** 流量经过 CF 节点和 VPS 转发,物理路径变长,延迟会比直连稍高(对网页服务无感,对游戏有影响)。
### 6、总结
这是一套**低成本、高安全、易维护**的完美个人自托管方案。
- **成本:** 闲置/廉价 VPS 即可利用。
- **安全:** Cloudflare 护盾 + 隧道隔离。
- **维护:** “一次铺路,终身受益”,新增服务仅需 10 秒配置。